'''
@Project ：Data-Analysis
@File    ：8.10练习1：各国每年电影产量.py
@IDE     ：PyCharm
@Author  ：SUNLIN
@Date    ：2025/3/11 18:35:51
'''

import pandas as pd
import numpy as np


pd.set_option('display.expand_frame_repr', False)
pd.set_option('display.max_rows', None)
pd.set_option('display.max_columns', None)
pd.set_option('display.width', 100)

'''
自定义解析函数
f"{d}-01-01":允许在字符串中嵌入变量和表达式
enumerate: 用于同时获取列表的索引和列的值
'''

def parse_date(date_list):
    date_list = list(date_list)  # 确保是副本，而不是视图
    for i, d in enumerate(date_list):
        if len(d) == 4 and d.isdigit():
            date_list[i] = f"{d}-01-01"

    return pd.to_datetime(date_list)

data = pd.read_excel('../doc/datasource/C8-8.5-数据采集-clean.xlsx',
                     usecols=['movie_name', 'country', 'language', 'release_date', 'average_score', ])
# 按照所定义顺序排序
data = data[['movie_name', 'country', 'language', 'release_date', 'average_score']]

# 各国每年电影的产量
'''
数据格式：
中国
1990 100
1991 200
美国
1990 20
...
实现：
1. 明确国家类别数据：有多少个国家 -> country_list
2. 筛选每个国家，并定义为一个dataframe
3. 针对美国国家的df，使用resample.count()方法统计每个国家的产量
'''
# 防止有空值
data['country'] = data['country'].fillna(value='')
data['country'] = data['country'].str.strip(' ')

# 获取去重之后的国家列表
country_list = []
for c in data['country']:
    c_list = c.split(' / ')
    for l in c_list:
        country_list.append(l)
country_list = list(set(country_list))

# 移除一些重复的数据
if '美国/澳大利亚' in country_list:
    country_list.remove('美国/澳大利亚')
if '捷克斯洛伐克/捷克' in country_list:
    country_list.remove('捷克斯洛伐克/捷克')
if '中国大陆' in country_list:
    country_list.remove('中国大陆')
if '中国香港' in country_list:
    country_list.remove('中国香港')
if '中国台湾' in country_list:
    country_list.remove('中国台湾')

data['release_date'] = parse_date(data['release_date'])
data = data.set_index(data['release_date'])

count = 0
for label in country_list:
    temp = data[data['country'].str.contains(label)]
    print("============")
    print("标签：", label)
    print("频数：", len(temp))
    count = count + len(temp)
    country_year_tj = temp['release_date'].resample('YE').count()
    print(country_year_tj)

print(count)
# 电影语言的频数统计

# 各国各评分下的电影数量
